<?php
namespace logic\sys\message\mobile;
class Message{
    
    public function send($mobile,$content){
        $flag = 0; 
        $argv = array( 
            'sn'=>'SDK-WSS-010-05784', ////替换成您自己的序列号
            'pwd'=>strtoupper(md5('SDK-WSS-010-05784'.'^9064-64')), //此处密码需要加密 加密方式为 md5(sn+password) 32位大写
            'mobile'=>$mobile,//手机号 多个用英文的逗号隔开 post理论没有长度限制.推荐群发一次小于等于10000个手机号
            'content'=>iconv('UTF-8','gb2312//IGNORE',$content),//短信内容
            'ext'=>'',      
            'stime'=>'',//定时时间 格式为2011-6-29 11:09:21
            'rrid'=>''
        ); 
        //构造要post的字符串 
        foreach ($argv as $key=>$value){ 
            if ($flag!=0) { $params .= "&";$flag = 1;} 
            $params.= $key."="; $params.= urlencode($value); 
            $flag = 1; 
        } 
        $length = strlen($params); 
        $fp = fsockopen("sdk2.entinfo.cn",8060,$errno,$errstr,10) or exit($errstr."--->".$errno);  //创建socket连接 
        //构造post请求的头 
        $header = "POST /webservice.asmx/mt HTTP/1.1\r\n"; 
        $header .= "Host:sdk2.entinfo.cn\r\n"; 
        $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
        $header .= "Content-Length: ".$length."\r\n"; 
        $header .= "Connection: Close\r\n\r\n"; 
        //添加post的字符串 
        $header .= $params."\r\n"; 
        //发送post的数据 
        fputs($fp,$header); 
        $inheader = 1; 
        while (!feof($fp)){ 
            $line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据 
            if ($inheader && ($line == "\n" || $line == "\r\n")) { 
                $inheader = 0; 
            }       
        } 
        $line   = str_replace("<string xmlns=\"http://tempuri.org/\">","",$line);
        $resultCode = str_replace("</string>","",$line);
        $return = array(
            'ret'    => $resultCode > 1 ? true : false , // true 发送成功 false 发送失败
            'msg'    => $resultCode
        );
        if( !$return['ret'] ){
            $return['msg'] = '错误码:'.$resultCode.';错误信息：'.$this->getError($resultCode);
        }
        return $return;
    }

    private function getError($code){
        $errorList = array(
            '-2'   => '帐号/密码不正确',
            '-4'   => '余额不足支持本次发送(或者修改密码长度不正确)',
            '-5'    => '数据格式错误',
            '-6'    => '参数有误',
            '-7'    => '权限受限',
            '-8'    => '流量控制错误',
            '-9'    => '扩展码权限错误',
            '-10'   => '内容长度长',
            '-11'   => '内部数据库错误',
            '-12'   => '序列号状态错误',
            '-14'   => '服务器写文件失败',
            '-17'   => '没有权限如发送彩信仅限于SDK3',
            '-19'   => '禁止同时使用多个接口地址',
            '-20'   => '相同手机号，相同内容重复提交',
            '-22'   => '提交的IP不是所绑定的IP',
            '-23'   => '缓存无此序列号信息',
            '-604'   => '手机号码为空，参数错误',
            '-605'  => '内容为空，参数错误'
        );
        return $errorList[$code];
    }
}